// PLC完整功能测试脚本
const plcService = require('../client/src/services/plcService');

async function testPLCFullFunctionality() {
  console.log('开始测试PLC完整功能...');
  
  try {
    // 测试加载PLC配置
    console.log('\n1. 测试加载PLC配置:');
    const config = await plcService.loadConfig();
    console.log('PLC配置加载成功:', JSON.stringify(config, null, 2));
    
    // 测试加载PLC分组配置
    console.log('\n2. 测试加载PLC分组配置:');
    const groups = await plcService.loadGroups();
    console.log('PLC分组配置加载成功:', JSON.stringify(groups, null, 2));
    
    // 测试获取PLC状态
    console.log('\n3. 测试获取PLC状态:');
    const status = await plcService.getStatus();
    console.log('PLC状态获取成功:', status);
    
    // 测试直接读取配置中的变量（无权限限制）
    if (config.variables && config.variables.length > 0) {
      console.log('\n4. 测试直接读取配置中的变量（无权限限制）:');
      const variableAddresses = config.variables.map(v => v.address);
      const readResult = await plcService.readVariablesDirectUnrestricted(variableAddresses);
      console.log('直接读取结果:', JSON.stringify(readResult, null, 2));
    } else {
      console.log('\n4. 配置中没有变量，测试读取默认变量:');
      const defaultVariables = ['DB1,W0.0', 'DB1,W2.0', 'DB1,W4.0', 'DB1,W6.0'];
      const readResult = await plcService.readVariablesDirectUnrestricted(defaultVariables);
      console.log('直接读取结果:', JSON.stringify(readResult, null, 2));
    }
    
    // 测试分组读取（如果存在分组）
    if (groups && groups.groups && groups.groups.length > 0) {
      console.log('\n5. 测试读取第一个分组的变量:');
      const firstGroup = groups.groups[0];
      const groupReadResult = await plcService.readGroupVariables(firstGroup.id);
      console.log(`分组 ${firstGroup.id} 读取结果:`, JSON.stringify(groupReadResult, null, 2));
    } else {
      console.log('\n5. 没有分组配置，跳过分组读取测试');
    }
    
    console.log('\n✅ 所有测试完成!');
  } catch (error) {
    console.error('❌ 测试过程中出现错误:', error);
  }
}

// 运行测试
testPLCFullFunctionality();